#pragma once

struct ID3D11InputLayout;
struct ID3D11Device;

namespace mgfx
{
	typedef int VertexFormatID;

	struct VertexPosition
	{
		XMFLOAT3 Position;

		static VertexFormatID VertexFormat;
	};

	struct VertexPositionTexture
	{
		XMFLOAT3 Position;
		XMFLOAT2 TextureCoord;

		static VertexFormatID VertexFormat;
	};

	struct VertexPositionNormalTangentTexture
	{
		XMFLOAT3 Position;
		XMFLOAT3 Normal;
		XMFLOAT3 Tangent;
		XMFLOAT2 TextureCoord;

		static VertexFormatID VertexFormat;
	};

	struct VertexParticle
	{
		XMFLOAT3 Position;
		XMFLOAT2 TextureCoord;
		float Size;
		float Opacity;

		static VertexFormatID VertexFormat;
	};

	class InputLayouts
	{
	public:
		//ID3D11InputLayout* PositionNormalTexture;
		//ID3D11InputLayout* PositionTangentNormalTex;
		//ID3D11InputLayout* Particle;

		static void init();
	};

}
